home *** CD-ROM | disk | FTP | other *** search
/ PC Professionell 2005 June / PCpro_2005_06.ISO / files / opensource / amc / amc_install.exe / {app} / Scripts / MovieGoods.ifs < prev    next >
Encoding:
Text File  |  2005-03-12  |  5.6 KB  |  195 lines

  1. (***************************************************
  2.  
  3. Ant Movie Catalog importation script
  4. www.antp.be/software/moviecatalog/
  5.  
  6. [Infos]
  7. Authors=KaraGarga
  8. Title=MovieGoods
  9. Description=Import big movie poster from moviegoods.com
  10. Site=moviegoods.com
  11. Language=EN
  12. Version=0.1
  13. Requires=3.5.0
  14. Comments=
  15. License=Made for Ant Movie Catalog and can be distributed freely...
  16. GetInfo=1
  17.  
  18. [Options]
  19.  
  20. ***************************************************)
  21.  
  22. program MOVIEGOODS;
  23.  
  24. var
  25.   MovieName: string;
  26.   MovieURL: string;
  27.   ImageURL: string;
  28.   ImageName: string;
  29. function FindLine(Pattern: string; List: TStringList; StartAt: Integer): Integer;
  30. var
  31.   i: Integer;
  32. begin
  33.   Result := -1;
  34.   if StartAt < 0 then
  35.     StartAt := 0;
  36.   for i := StartAt to List.Count-1 do
  37.     if Pos(Pattern, List.GetString(i)) <> 0 then
  38.     begin
  39.       Result := i;
  40.       Break;
  41.     end;
  42. end;
  43.  
  44. procedure CutAfter(var Str: string; Pattern: string);
  45. begin
  46.   Str := Copy(str, Pos(Pattern, Str) + Length(Pattern), Length(Str));
  47. end;
  48. procedure CutBefore(var Str: string; Pattern: string);
  49. begin
  50.   Str := Copy(Str, Pos(Pattern, Str), Length(Str));
  51. end;
  52.  
  53. function GetStringFromHTML(Page, StartTag, CutTag, EndTag: string): string;
  54. begin
  55.   Result := '';
  56.   if Pos(StartTag, Page) > 0 then begin
  57.     CutBefore(Page, StartTag);
  58.     if Length(CutTag) > 0 then
  59.       CutAfter(Page, CutTag);
  60.     Result := Copy(Page, 0, Pos(EndTag, Page) - 1);
  61.     HTMLDecode(Result);
  62. //  ShowMessage('DEBUG: GetStringFromHTML - StartTag "'+StartTag+'", CutTag "'+CutTag+'", EndTag "'+EndTag+'", Result "'+Result+'" ___ '+Page);
  63.   end;
  64. end;
  65.  
  66.  
  67. procedure AnalyzePage(Address: string);
  68. var
  69.   Page: TStringList;
  70. begin
  71.   Page := TStringList.Create;
  72.   Page.Text := GetPage(Address);
  73.   if pos('<TD VALIGN="top" ALIGN="center" width="120">', Page.Text) = 0 then
  74.   begin
  75.     ShowMessage('Sorry no cover available!');
  76.   end else
  77.   begin
  78.       PickTreeClear;
  79.       PickTreeAdd('Search results', '');
  80.       AddMoviesTitles(Page);
  81.     if PickTreeExec(Address) then
  82.       AnalyzePage2(Address);
  83.   end;
  84.   Page.Free;
  85. end;
  86.  
  87. procedure AnalyzePage2(Address: string);
  88. var
  89.   Page: TStringList;
  90. begin
  91.   Page := TStringList.Create;
  92.   Page.Text := GetPage(Address);
  93.   //if pos('<!--- Image --->', Page.Text) <> 0 then
  94.   //begin
  95.   //  AnalyzeMoviePage(Page)
  96.   //end else
  97.   begin
  98.       PickTreeClear;
  99.       PickTreeAdd('Search results', '');
  100.       AddMoviesTitles2(Page);
  101.     if PickTreeExec(Address) then
  102.     //Setfield(fieldURL, (Address));
  103.     GetPicture (Address);
  104.   end;
  105.   Page.Free;
  106. end;
  107.  
  108. procedure AddMoviesTitles(ResultsPage: TStringList);
  109. var
  110.   Page: string;
  111.   MovieTitle, MovieAddress: string;
  112. begin
  113.   Page := ResultsPage.Text;
  114.   while Pos('<TD VALIGN="top" ALIGN="center" width="120">', Page) > 0 do
  115.   begin
  116.     CutBefore(Page, '<TD VALIGN="top" ALIGN="center" width="120">');
  117.     MovieAddress := GetStringFromHTML(Page, 'width="120"><A HREF="', 'HREF="', '"');
  118.     MovieTitle := GetStringFromHTML(Page, 'ALT="', '"', '"></A>');
  119.     ImageURL:= 'http://www.moviegoods.com/Assets/product_images/1000/'+GetStringFromHTML(Page, 'width="120"><img SRC="', 'SRC="', '"');
  120.     CutAfter(Page, '</A>');
  121.     //ImageName=: ImageURL
  122.     //ImageName=: copy(StringReplace(ImageName, '/images/na_generic_out.jpg', 'This Item Sold Out'));
  123.     MovieAddress := StringReplace(MovieAddress, '1000.A', '1020.A');
  124.     HTMLRemoveTags(MovieTitle);
  125.     PickTreeAdd(MovieTitle, MovieAddress+ImageURL);
  126.     //PickTreeAdd('',ImageURL);
  127.   end;
  128. end;
  129.  
  130. procedure AddMoviesTitles2(ResultsPage: TStringList);
  131. var
  132.   Page: string;
  133.   MovieTitle, MovieAddress: string;
  134. begin
  135.   Page := ResultsPage.Text;
  136.   while Pos('<INPUT TYPE="HIDDEN" NAME="DSP_IMAGE" VALUE="', Page) > 0 do
  137.   begin
  138.     CutBefore(Page, '<INPUT TYPE="HIDDEN" NAME="DSP_IMAGE" VALUE="');
  139.     MovieAddress := 'http://www.moviegoods.com/Assets/product_images/1000/'+GetStringFromHTML(Page, '<INPUT TYPE="HIDDEN" NAME="DSP_IMAGE" VALUE="', 'UE="', '">');
  140.     MovieTitle := GetStringFromHTML(Page, 'border=2 ALT=', '"', '></A>');
  141.     MovieAddress := StringReplace(MovieAddress, '1000.A', '1020.A');
  142.     CutAfter(Page, '">');
  143.     HTMLRemoveTags(MovieTitle);
  144.     PickTreeAdd(MovieTitle, MovieAddress);
  145.   end;
  146. end;
  147.  
  148. {function FindValue(BeginTag, EndTag: string; Page: TStringList; var LineNr: Integer; var Line: string): string;
  149. var
  150.   BeginPos, EndPos: Integer;
  151.   Value: string;
  152. begin
  153.   Result := '';
  154.   Value := '';
  155.   BeginPos := Pos(BeginTag, Line);
  156.   if BeginPos > 0 then
  157.   begin
  158.     BeginPos := BeginPos + Length(BeginTag);
  159.     if BeginTag = EndTag then
  160.     begin
  161.       Delete(Line,1,BeginPos-1);
  162.       BeginPos := 1;
  163.     end;
  164.     EndPos := pos(EndTag, Line);
  165.     while ((EndPos = 0) and (LineNr < Page.Count-1 )) do
  166.     begin
  167.       Value := Value + copy(Line, BeginPos, Length(Line) - BeginPos);
  168.       // Next Line
  169.       BeginPos := 1;
  170.       LineNr := LineNr + 1;
  171.       Line := Page.GetString(LineNr);
  172.       if Value = '' then
  173.         Exit;
  174.       EndPos := Pos(EndTag, Line);
  175.     end;
  176.     Value := Value + copy(Line, BeginPos, EndPos - BeginPos);
  177.    end;
  178.   Result := Value;
  179. end;}
  180.  
  181. begin
  182.   if CheckVersion(3,5,0) then
  183.   begin
  184.     MovieName := GetField(fieldOriginalTitle);
  185.     if MovieName = '' then
  186.       MovieName := GetField(fieldTranslatedTitle);
  187.     if Input('MovieGoods Poster Import 0.1', 'Please enter English or USA title for the movie:', MovieName) then
  188.     begin
  189.       AnalyzePage('http://www.moviegoods.com/find.asp?mscssid=&opt1=TI&opt1=RD&bool1=OR&str2=&x=0&y=0&str1='+UrlEncode(MovieName));
  190.     end;
  191.   end
  192.   else
  193.     ShowMessage('This script requires a newer version of Ant Movie Catalog (at least the version 3.5.0)');
  194. end.
  195.